Conventionally, central processing units (CPUs) see a graphics driver as a monolithic resource such that for multi-threaded applications, a CPU thread would request a graphics resource by acquiring a lock or entering a critical code section before it issues a task to the graphics processing unit (GPU). This conventional technique lacks CPU-GPU synchronization and thus results in latency while causing other inefficiencies and waste of system resources.